Docker 是一種開源的容器化平台,允許開發者和運維人員打包應用程式及其所有依賴項,並將其放在「容器」中,這樣就可以確保應用程式在不同的環境中一致地運行。Docker有非常多的優點,包含跨平台運行、快速部署與縮放(scalable)、可移植性與靈活性、強大的開源社群支持。因此我平常開發時也經常使用到這項技術,尤其是跨平台運行的特性,更是能確保服務的穩定,不會因為在不同環境下就不能運行。搭配上Kubernetes更是能建立起一套優秀的服務及服務管理工具。
以下會介紹如何將Springboot服務打包成docker。
Dockerfile
FROM openjdk:11-jre-slim
COPY ./target/*.jar /Documents/docker/demo.jar
WORKDIR /Documents/docker
RUN sh -c 'touch demo.jar'
ENTRYPOINT ["java","-jar","demo.jar"]
Tips:
這個Dockerfile的base image是openjdk:11-jre-slim。將打包好的jar檔放在base image的/Documents/docker/ 下,並將jar檔命名為demo.jar,最後執行demo.jar。
使用IntelliJ IDEA側邊的Maven工具進行打包,點選install即可完成打包jar檔,可至target目錄下查看。
到Dockerfile存放目錄下執行指令
docker build -t test .
-t 後接的為image的名稱
成功執行後可下指令查看是否有成功建立image
docker image ls -a
或是直接安裝Docker Desktop(滿好用的,推薦安裝)進行查看
docker執行服務
docker run -p ${host port}:${container port} image_name
host port為本機上的port,container port為container要映射出來的port,假設這個被打包的springboot服務是運行在8080 port上,那container port就應該是8080 port。
以上是簡單的Springboot服務打包成docker並執行的教學,下一篇會介紹特殊的Dockerfile(先前提到的multi-frame dicom轉換服務,使用了opencv函式庫)。